package com.zzl.finance.data.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzl.finance.data.dto.FinanceInstitutyAddDto;
import com.zzl.finance.data.dto.FinanceInstitutyDto;
import com.zzl.finance.data.dto.FinanceInstitutyInfoDto;
import com.zzl.finance.data.dto.FinanceInstitutyUpdateDto;
import com.zzl.finance.data.entity.FinanceInstitutyEntity;
import com.zzl.general.common.exception.SysException;
import com.zzl.general.common.serurity.entity.User;
import com.zzl.general.common.utils.PageUtils;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * 金融机构
 *
 * @author wztsl
 * @date 2021-12-22 16:56:38
 */
public interface FinanceInstitutyService extends IService<FinanceInstitutyEntity> {

    /**
     * 分页查询资方列表
     *
     * @param params 查询参数
     * @return 分页数据
     */
    PageUtils queryPage(Map<String, Object> params, HttpSession session);

    /**
     * 新增
     *
     * @param financeInstitutyAddDto 新增实体
     * @param user                   当前登录用户
     * @throws SysException 业务异常
     */
    void saveFinanceInstituty(FinanceInstitutyAddDto financeInstitutyAddDto, User user) throws SysException;

    /**
     * 修改
     *
     * @param financeInstitutyUpdateDto 修改实体
     * @param user                      当前登录用户
     * @throws SysException 业务异常
     */
    void updateFinanceInstitutyById(FinanceInstitutyUpdateDto financeInstitutyUpdateDto, User user) throws SysException;

    /**
     * 查询企业的金融机构列表
     *
     * @param params 条件参数
     * @return 金融机构列表
     */
    List<FinanceInstitutyDto> getFinanceInstituty(Map<String, Object> params, User user) throws SysException;

    /**
     * 通过id获取金融机构数据
     *
     * @param id 金融机构主键
     * @return 金融机构信息
     */
    FinanceInstitutyInfoDto getFinanceInstitutyById(String id) throws SysException;

    /**
     * 冻结/启用 资金方
     *
     * @param id   资金方id
     * @param user 用户
     */
    void updateStatusById(String id, User user) throws SysException;

    /**
     * 融资范围下拉框
     *
     * @param type 接入产品，2：反向保理、3：数字债权
     * @return 融资范围下拉框
     */
    List<FinanceInstitutyEntity> getFinancingScope(Integer type);

    List<FinanceInstitutyEntity> dropDownBox();
}

